package com.aoxin.service.impl.course.webCourse;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.aoxin.mapper.SlfSystemMessageMapper;
import com.aoxin.model.SlfSystemMessage;
import com.aoxin.service.inter.course.webCourse.SystemMessageService;
import com.aoxin.util.EmptyUtil;

@Service
public class SystemMessageServiceImpl implements SystemMessageService {

    @Autowired
    SlfSystemMessageMapper slfSystemMessageMapper;


    @Override
    @Transactional
    public Integer deleteSystemMessage(List<Integer> messageIds) {
        Integer result = 0;
        if(messageIds != null && messageIds.size() > 0){
            result = slfSystemMessageMapper.deleteSystemMessage(messageIds);
        }
        return result;
    }

    @Override
    @Transactional
    public Integer insertSystemMessage(SlfSystemMessage slfSystemMessage,List<Integer> userIds) throws IllegalAccessException {
        Integer result = 0;
        if(!EmptyUtil.objFieldsIsEmpty(slfSystemMessage)){
            for (Integer userId : userIds){
                slfSystemMessage.setUserId(userId);
                slfSystemMessage.setIsRead(0);
                slfSystemMessage.setSendDate(new Date());
                result = slfSystemMessageMapper.insertSystemMessage(slfSystemMessage);
            }
        }
        return result;
    }

    @Override
    public List<SlfSystemMessage> getSystemMessage(SlfSystemMessage slfSystemMessage) {
        List<SlfSystemMessage> slfSystemMessageList = slfSystemMessageMapper.getSystemMessage(slfSystemMessage);
        return slfSystemMessageList;
    }

    @Override
    @Transactional
    public int updateSystemMessage(SlfSystemMessage slfSystemMessage) throws IllegalAccessException {
        Integer result = 0;
        if(!EmptyUtil.objFieldsIsEmpty(slfSystemMessage)){
            result = slfSystemMessageMapper.updateSystemMessage(slfSystemMessage);
        }
        return result;
    }

    @Override
    @Transactional
    public Integer sendSystemMessage(SlfSystemMessage slfSystemMessage) throws IllegalAccessException {
        Integer result = 0;
        if(!EmptyUtil.objFieldsIsEmpty(slfSystemMessage)){
            slfSystemMessage.setSendDate(new Date());
            slfSystemMessage.setIsRead(2);
            result = slfSystemMessageMapper.insertSystemMessage(slfSystemMessage);
        }
        return result;
    }

    @Override
    public List<SlfSystemMessage> getUserSystemMessage(Integer userId) {
        List<SlfSystemMessage> slfSystemMessageList = new ArrayList<>();
        if(userId != null){
            SlfSystemMessage slfSystemMessage = new SlfSystemMessage();
            slfSystemMessage.setUserId(userId);
            slfSystemMessageList = slfSystemMessageMapper.getSystemMessage(slfSystemMessage);
        }
        return slfSystemMessageList;
    }

    @Override
    @Transactional
    public Integer deleteUserSystemMessage(List<Integer> messageIds) {
        Integer result = 0;
        if(messageIds != null && messageIds.size() > 0){
            result = slfSystemMessageMapper.deleteSystemMessage(messageIds);
        }
        return result;
    }
}
